package com.yc.mybatis.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.po.LikeTable;

import java.util.Collections;

public class CodeGenerator {

    public static void main(String[] args) {
        generator("jdbc:mysql:///favorite","root", "a",
                "D:\\_文件柜\\133\\1024", "com.yc", "favorite");
    }

    public static void generator(String url, String username, String password, String outDir,
                                 String packagePath, String modelName){
        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("ly") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(outDir); // 指定输出目录
                })
//                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
//                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
//                    if (typeCode == Types.SMALLINT) {
//                        // 自定义类型转换
//                        return DbColumnType.INTEGER;
//                    }
//                    return typeRegistry.getColumnType(metaInfo);
//
//                }))
                .packageConfig(builder -> {
                    builder.parent(packagePath) // 设置父包名
                            .moduleName(modelName) // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, outDir)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    // 导出所有表
                    builder.likeTable(new LikeTable("%"));
//                    builder.addInclude("t_simple") // 设置需要生成的表名
//                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
               // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }


}
